开始之前:
1. 识别二维码输出相关数据
HUSKYLENS 2能识别出现在画面中的二维码,可以通过编程获取画面中检测到的二维码相关数据。可以读取的二维码数据有:检测到的二维码总数、已学习的二维码总数,指定二维码的数据,包括二维码ID、内容、宽度、高度以及二维码中心点的X坐标位置和Y坐标位置。
示例程序如下。
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from unihiker import GUI
from pinpong.board import Board
from dfrobot_huskylensv2 import *
u_gui=GUI()
Board().begin()
huskylens = HuskylensV2_I2C()
huskylens.knock()
huskylens.switchAlgorithm(ALGORITHM_QRCODE_RECOGNITION)
line1=u_gui.draw_text(text="",x=0,y=0,font_size=18, color="#0000FF")
line2=u_gui.draw_text(text="",x=0,y=40,font_size=18, color="#0000FF")
line3=u_gui.draw_text(text="",x=0,y=80,font_size=18, color="#0000FF")
line4=u_gui.draw_text(text="",x=0,y=120,font_size=18, color="#0000FF")
while True:
huskylens.getResult(ALGORITHM_QRCODE_RECOGNITION)
if (huskylens.available(ALGORITHM_QRCODE_RECOGNITION)):
line1.config(text=(str("二维码总数:") + str((huskylens.getCachedResultNum(ALGORITHM_QRCODE_RECOGNITION)))))
line2.config(text=(str("已学习的二维码数:") + str((huskylens.getCachedResultMaxID(ALGORITHM_QRCODE_RECOGNITION)))))
line3.config(text=(str("靠中心的二维码ID:") + str((huskylens.getCachedCenterResult(ALGORITHM_QRCODE_RECOGNITION).ID if huskylens.getCachedCenterResult(ALGORITHM_QRCODE_RECOGNITION) else -1))))
line4.config(text=(str("第一个二维码ID:") + str((huskylens.getCachedResultByIndex(ALGORITHM_QRCODE_RECOGNITION, 1-1).ID if huskylens.getCachedResultByIndex(ALGORITHM_QRCODE_RECOGNITION, 1-1) else -1))))
在Mind+中点击上传到设备,等待程序上传完成后。
将HUSKYLENS 2的摄像头对准画面中的二维码可进行学习,如何学习二维码详细操作请看:二哈识图 2 二维码识别功能说明。
将HUSKYLENS 2的摄像头对准二维码,观察行空板M10屏幕显示的结果。
**运行结果:**如图所示,可输出检测到的二维码数量(无论是否该二维码已学习)、已学习的二维码数量,可输出指定的二维码ID,未学习的二维码则为0。
2. 获取画面中指定二维码的相关数据
HUSKYLENS 2识别二维码后,可获取画面中指定二维码的相关数据。例如,判断某个指定ID的二维码是否在画面中、可获取画面中相同ID的二维码数量,当画面中出现多个相同ID的二维码时,可指定获取其中某个二维码的相关参数,包括名称、内容、X/Y坐标、宽度、高度。
示例程序如下:
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from unihiker import GUI
from pinpong.board import Board
from dfrobot_huskylensv2 import *
u_gui=GUI()
Board().begin()
huskylens = HuskylensV2_I2C()
huskylens.knock()
huskylens.switchAlgorithm(ALGORITHM_QRCODE_RECOGNITION)
line1=u_gui.draw_text(text="",x=0,y=0,font_size=18, color="#0000FF")
line2=u_gui.draw_text(text="",x=0,y=40,font_size=18, color="#0000FF")
line3=u_gui.draw_text(text="",x=0,y=65,font_size=18, color="#0000FF")
line4=u_gui.draw_text(text="",x=0,y=105,font_size=18, color="#0000FF")
line5=u_gui.draw_text(text="",x=0,y=130,font_size=18, color="#0000FF")
while True:
huskylens.getResult(ALGORITHM_QRCODE_RECOGNITION)
if (huskylens.available(ALGORITHM_QRCODE_RECOGNITION)):
if ((huskylens.getCachedResultByID(ALGORITHM_QRCODE_RECOGNITION, 0) is not None)):
line1.config(text=(str("ID0二维码总数:") + str((huskylens.getCachedResultNumByID(ALGORITHM_QRCODE_RECOGNITION, 0)))))
line2.config(text="第1个ID0二维码")
line3.config(text=(str("的内容:") + str((huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 1-1).content if huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 1-1) else -1))))
line4.config(text="第2个ID0二维码")
line5.config(text=(str("的坐标:") + str((str((huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 2-1).xCenter if huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 2-1) else -1)) + str((str(",") + str((huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 2-1).yCenter if huskylens.getCachedIndexResultByID(ALGORITHM_QRCODE_RECOGNITION, 0, 2-1) else -1))))))))
**运行结果:**如图所示,画面中有两个未学习的二维码(ID为0),第一个ID0二维码是右边的,该标签的内容是“南瓜面包”,第二个ID0二维码是左边的,该二维码的坐标是(122,187)。